Repository navigation
研究:定位 Vim resize 后 MSYS 输入丢失边界 #52 - #92
Merged
Merged
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This was referenced Oct 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
问题与结果
固定 MSYS Vim 的 GUI resize 后,原 93 B 命令有时进入插入内容,场景在 stage59 失败。本 PR 将捕获到的丢失定位到 MSYS 控制台事件到
read(0)的转换,并公开经白名单筛选的时间线、身份和限制;这是诊断交付,#52 继续开放。TermForge writer 一次成功写出含 Ctrl-O 的 93 B,原生输入也包含它;三个红例中 MSYS 最终只交给 Vim 后续 92 B。函数边界跟踪进一步看到:
process_input_messagePeek 到 resize 后进入send_winch_maybe,另一线程先移走 resize,随后旧调用的清理 Read 取走新到 Ctrl-O。固定公开源码中的解锁/重新加锁解释与此吻合,但尚无单变量修补红绿。不得简单删除为防信号处理死锁而加入的解锁。范围与身份
44ea45b988b6bb0b72f21cd24597fe54b9b4ec31;本 PR HEADd6b3f798c82fd07cd0c88d989bfce3876c9692fa;仅文档和白名单 JSON。termforge.5× 官方 ConPTY1.25.260930003× flags24;固定 Vim/MSYS SHA 见记录。73472864e5aa291704917812ff1848f7a59be6e5f30c41f6a613e3fc18c740d4;公开 JSON SHA25655268bfb82364719231cf38e9b3315d8daff73286fdbe99dcbbe64b70540b624。fix/conpty-backend-r47;不改变 Draft 实验:候选 .5 与固定官方 ConPTY 联合整合(保留真实回归) #50 或 [R2][Backend] 整合已确认的随包固定微软 ConPTY 正式路线 #47 的未通过状态。验证与限制
首批最多4轮,达到一例原 stage59 和一例完整诊断绿,或遇不同失败即停止;实际两红一绿。函数调用点核对最多2轮,首例原失败或不同失败即停,实际一红。四轮原25秒/外层40秒、原输入/脚本/精确断言保持,均无外层超时、Job active0/terminated0、desktopgone。事件未截断。
诊断绿只证明该次带探针运行通过原断言,不是修复验收。Frida 代码钩子及附加握手会扰动调度;工具 provider 身份字段缺口、附加前调用不覆盖和历史未捕获失败均保留。没有将不同进程时钟合成性能测量。
离线核对四份原始时间线、writer字节、COFF函数映射、53项身份哈希、源码恢复、JSON解析/相对链接/隐私扫描和
git diff --check。Standards 与 Spec 独立审查在本 HEAD 无剩余阻塞;停止规则与实际结果已分列。两条 CI 均成功,实际 checkout 为dc2494313838cfbd48fc46e3777945ef78858e24(合并本 HEAD 与固定基点)。Build:Windows default/system 52/52,273.96秒,Ubuntu 默认 33/33,11.72秒;External candidate:Windows/Linux候选core+checkpoint各 2/2(1.14/0.31秒),其余候选/system流程成功。各配置独立,不作为显式官方后端验收。Refs #52, #47, #28。